#include <iostream>
using namespace std;
const int N = 1000;
int ne[N];
void get_next(string S, int ne[])
{
    int j = 0, i = 1;
    ne[1] = 0;
    while (i < S.length())
    {
        if (j == 0 || S[i] == S[j])
            ne[++i] = ++j;
        else
            j = ne[j];
    }
}
int KMP(string S, string T)
{
    get_next(T, ne);
    int i = 1, j = 1;
    /* 王道的模板while(i<=S.length() && j<=T.length())有问题
     如果你的字符串是从0开始 T[T.length()]是没有字符的
     这不扯犊子嘛 判断条件根本用到 j匹配到最后一定会匹配失败然后回跳 j<T.length()
     总之这个模板比y总的差远了
    */
    while (i < S.length() && j < T.length())
    {
        if (j == 0 || S[i] == T[j])
            i++, j++;
        else
            j = ne[j];
        cout << i << " " << j << endl;
    }
    if (j = T.length())
        return i - j;

    return 0;
}
int main()
{
    //    模板串  匹配串
    /*
     * ABABCABCACBAB
    ABCAC
     * */
    char S[N], T[N];
    cin >> S;
    cin >> T;
    cout << KMP(S, T) << endl;
    cout << endl;
}